home *** CD-ROM | disk | FTP | other *** search
- Program EX_0505;
- {Listing 10P - see documentation in TUTOR.SSS}
-
- uses SSS;
- { For Pascal other than Turbo/Quick erase above line }
-
- const
- ARRIVL = 1;
- STARTA = 2;
- ENDACT = 3;
- NEXTAC = 4;
-
- { For MS Pascal $include:'SSSP1.H' }
-
- var
- id, server, ecode : integer;
-
- { For MS Pascal $include:'SSSP2.H' }
-
- procedure prime;
- begin
- server := 1;
- id := 0;
- INIQUE(1,1,1);
- SIMEND(24);
- CREATE(0, 0);
- INISTA(1,'Cost',0,0,0,0);
- end;
-
- begin
-
- prime;
-
- repeat
- ecode := NEXTEV;
- if ecode > 0 then
- begin
- case ecode of
-
- ARRIVL: begin
- id := id + 1;
- CREATE(EX(1), id );
- SETA(1, T);
- SCHED(0, NEXTAC, IDE);
- end;
-
- NEXTAC: if server > 0 then SCHED(0, STARTA, IDE)
- else QUEUE(1, 0);
-
- STARTA: begin
- SCHED(RN(0.66667, 0.16667) ,ENDACT,
- IDE);
- server := server - 1;
- end;
-
- ENDACT: begin
- TALLY(1, (T - A(1))*(1 + EX(2)));
- DISPOS;
- server := server + 1;
- if NQ(1) > 0 then
- begin
- REMVFQ(1,1);
- SCHED(0, STARTA, IDE);
- end;
- end;
-
- end;
- end;
- until ecode = 0;
-
- SUMRY('');
-
- end.
-